﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;
using System.IO;
using ComunesMGI.Enums;
using System.Security.Principal;

namespace OutlookMGI.AccesoDatos
{
    class MGIFachada : IMGI
    {
        #region IMGI Members

        public List<DataCliente> GetClientes()
        {

            MGIClientesSistemasWS.MGIClientesSistemasWSClient ws = new MGIClientesSistemasWS.MGIClientesSistemasWSClient();
            ws.Open();
            List<DataCliente> ret = ws.GetClientes();
            ws.Close();
            return ret;
        }

        public List<DataSistema> GetSistemas(int codcli)
        {
            MGIClientesSistemasWS.MGIClientesSistemasWSClient ws = new MGIClientesSistemasWS.MGIClientesSistemasWSClient();
            ws.Open();
            List<DataSistema> ret = ws.GetSistemas(codcli);
            ws.Close();
            return ret;
        }

        public List<DataCampo> GetCampos(int siscod, Lista lista)
        {
            MGIIncidentesWS.MGIIncidentesWSClient ws = new MGIIncidentesWS.MGIIncidentesWSClient();
            ws.Open();
            List<DataCampo> ret = ws.GetCampos(siscod, lista);
            ws.Close();
            return ret;
        }

        public DataAltaIncidente AddIncidente(DataSistema incidente, List<string> archivos)
        {
            MGIIncidentesWS.MGIIncidentesWSClient ws = new MGIIncidentesWS.MGIIncidentesWSClient();
            ws.Open();
            DataAltaIncidente ret = ws.AddIncidente(incidente);
            if (archivos != null)
            {
                foreach (string path in archivos)
                {
                    FileStream fStream = new FileStream(path, FileMode.Open, FileAccess.Read);
                    string sTmp = ws.UploadFile(fStream);
                    fStream.Close();
                    fStream.Dispose();

                    DataIncidente inc = new DataIncidente(ret.IdIncidente, String.Empty);
                    ws.AdjuntarArchivoIncidente(Path.GetFileName(path), incidente.Codigo,inc.IdIncidente , sTmp);
                }
            }
            ws.Close();
            return ret;
        }

        public List<DataSincronizarTarea> SincronizarTareas()
        {
            MGIUsuariosWS.MGIUsuariosWSClient ws = new MGIUsuariosWS.MGIUsuariosWSClient();
            List<DataSincronizarTarea>  tareas = ws.SincronizarTareas(WindowsIdentity.GetCurrent().Name);
            
            //List<DataSincronizarTarea> tareas = new List<DataSincronizarTarea>();
            //tareas.Add(new DataSincronizarTarea(4, EstadoSincronizacion.Alta, "Tarea de prueba 1", "Esta es una tarea, que locoooooo", DateTime.Now, DateTime.Now.AddDays(2), 25));
            //tareas.Add(new DataSincronizarTarea(2, EstadoSincronizacion.Modificación, "Tarea MODIFICADA de prueba 2", "Esta es una tarea, que locoooooo", DateTime.Now, DateTime.Now.AddDays(2), 25));
            //tareas.Add(new DataSincronizarTarea(3, EstadoSincronizacion.Baja, "Tarea de prueba 3", "Esta es una tarea, que locoooooo", DateTime.Now, DateTime.Now.AddDays(2), 25));
            
            ws.Close();
            return tareas;
        }


        #endregion

    }
}
